# -*- coding: utf-8 -*-
# @Time    : 2019/10/22 17:31
# @Author  : LiHaowen
# @Email   : lihaowen2017@163.com
# @File    : python_gil.py
# gil global interpreter lock
# python 中一个线程对应于c语言中的一个线程
# gil使得同一时刻只有一个线程运行在一个cpu上执行字节码, 无法将多个线程映射到多个cpu上执行
# gil会根据字节码执行的行数或者时间片释放gil，gil在遇到io操作时主动释放
# import dis
#
#
# def add(a):
#     a = a + 1
#     return a
#
#
# print(dis.dis(add))

total = 0


def add():
    # dosomething1
    # io操作
    # dosomething2
    global total
    for i in range(1000000):
        total += 1


def desc():
    global total
    for i in range(1000000):
        total -= 1


import threading

thread1 = threading.Thread(target=add)
thread2 = threading.Thread(target=desc)

thread1.start()
thread2.start()

thread1.join()
thread2.join()
# 数值不稳定
print(total)

